from abc import ABC, abstractmethod
from typing import List, Dict, Any, Optional

class BaseVectorStore(ABC):
    """向量存储基类"""
    
    @abstractmethod
    def add_texts(
        self,
        texts: List[str],
        metadata: Optional[List[Dict[str, Any]]] = None,
    ) -> List[str]:
        """
        添加文本到向量存储
        参数:
            texts: 文本列表
            metadata: 元数据列表
        返回:
            文档ID列表
        """
        pass
    
    @abstractmethod
    def similarity_search(
        self,
        query: str,
        k: int = 4,
        **kwargs
    ) -> List[Dict[str, Any]]:
        """
        基于相似度搜索
        参数:
            query: 查询文本
            k: 返回结果数量
        返回:
            包含内容、元数据和相似度的结果列表
        """
        pass
